"""角色和菜单关联表(SysRoleMenu)的Pydantic模型

包含用于API接口的Base、Create、Update、Public模型
"""

from typing import Optional

from pydantic import Field

from app.schemas.base import BaseSchema


class RoleMenuBase(BaseSchema):
    """角色和菜单关联表基础模型"""

    role_id: int = Field(description="角色ID", alias="roleId")
    menu_id: int = Field(description="菜单ID", alias="menuId")


class RoleMenuCreate(RoleMenuBase):
    """创建角色和菜单关联表时使用的模型"""

    pass


class RoleMenuUpdate(RoleMenuBase):
    """更新角色和菜单关联表时使用的模型"""

    role_id: Optional[int] = Field(default=None, description="角色ID", alias="roleId")
    menu_id: Optional[int] = Field(default=None, description="菜单ID", alias="menuId")


class RoleMenuPublic(RoleMenuBase):
    """角色和菜单关联表公开模型，用于API响应"""

    role_id: int = Field(alias="roleId", description="角色ID")
    menu_id: int = Field(alias="menuId", description="菜单ID")
